package org.jsola.hr.web;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.jsola.core.Page;
import org.jsola.core.Result;
import org.jsola.hr.dto.SchemeTemplateAddDTO;
import org.jsola.hr.dto.SchemeTemplateUpdateDTO;
import org.jsola.hr.query.SchemeTemplateQuery;
import org.jsola.hr.vo.SchemeTemplateListVO;
import org.jsola.hr.vo.SchemeTemplateVO;

import java.util.List;

/**
 * 参保方案模板表
 *
 * @author zhr
 */
@Api(tags = "hr-参保方案模板表")
public interface ISchemeTemplateControllerAPI {

    /**
     * 新增参保方案模板表
     * @param schemeTemplateAddDTO 参保方案模板表新增实体
     * @return 参保方案模板表展示对象
     */
    @ApiOperation(value = "新增参保方案模板表")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "schemeTemplateAddDTO", dataType = "SchemeTemplateAddDTO", value = "新增参保方案模板表", paramType = "body")
    })
    Result<SchemeTemplateVO> save(SchemeTemplateAddDTO schemeTemplateAddDTO);


    /**
     * 修改参保方案模板表
     * @param schemeTemplateUpdateDTO 参保方案模板表
     * @return 更新数量
     */
    @ApiOperation(value = "修改参保方案模板表")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "schemeTemplateUpdateDTO", dataType = "SchemeTemplateUpdateDTO", value = "修改参保方案模板表", paramType = "body")
    })
    Result<Integer> update(SchemeTemplateUpdateDTO schemeTemplateUpdateDTO);




    /**
     * 删除单个参保方案模板表，彻底删除
     * @param schemeTemplateId 参保方案模板表id
     * @return 删除数量
     */
    @ApiOperation(value="删除单个参保方案模板表，彻底删除")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "schemeTemplateId", dataType = "String", value = "参保方案模板表id", paramType = "path")
    })
    Result<Integer> delete(String schemeTemplateId);


    /**
     * 批量删除参保方案模板表，彻底删除
     * @param schemeTemplateIds 参保方案模板表id集合
     * @return 删除数量
     */
    @ApiOperation(value = "批量删除参保方案模板表，彻底删除")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "schemeTemplateIds", dataType = "String[]", value = "参保方案模板表id数组", paramType = "body" ,allowMultiple = true)
    })
    Result<Integer> deleteBatch(String[] schemeTemplateIds);


    /**
     * 根据参保方案模板表id查询参保方案模板表详情
     * @param schemeTemplateId 参保方案模板表id
     * @return 参保方案模板表详情
     */
    @ApiOperation(value="根据参保方案模板表id查询参保方案模板表详情")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "schemeTemplateId", dataType = "String", value = "参保方案模板表id", paramType = "path")
    })
    Result<SchemeTemplateVO> findById(String schemeTemplateId);


    /**
     * 查询参保方案模板表
     * @param schemeTemplateQuery 参保方案模板表查询参数
     * @return page
     */
    @ApiOperation(value="查询参保方案模板表")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "schemeTemplateQuery", dataType = "SchemeTemplateQuery", value = "参保方案模板表查询参数", paramType = "query")
    })
    Result<List<SchemeTemplateListVO>> listAll(SchemeTemplateQuery schemeTemplateQuery);


     /**
     * 分页查询参保方案模板表
     * @param schemeTemplateQuery 参保方案模板表查询参数
     * @return page
     */
    @ApiOperation(value="分页查询参保方案模板表")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "schemeTemplateQuery", dataType = "SchemeTemplateQuery", value = "参保方案模板表查询参数", paramType = "query")
    })
    Result<Page<SchemeTemplateListVO>> page(SchemeTemplateQuery schemeTemplateQuery);


}

